Network architectures are generally organized as a series of layers or levels, each one built upon the one below it. The layers can be implemented either in hardware or software. The number of layers, the name of each layer, the contents of each layer, and the function of each layer differ from network to network. However, in all networks, the purpose of each layer is to offer certain services to the higher levels, shielding those layers from the details of how the offered services are actually implemented. Layer n on one device carries on a conversation with layer n on another device. The rules and conventions used in this conversation are collectively known as a layer n protocol. A protocol is thus an agreed-upon format for transmitting data between the two devices. A set of layers and protocols is called a network architecture.
FIG. 1 illustrates a network architecture including five layers. The entities comprising the corresponding layers on different devices are called peers. In other words, it is the peers that communicate using the protocol. In reality, no data is directly transferred from layer n on one device to layer n on another device. Instead, each layer passes (or tunnels) data and control information to the layer immediately below it, until the lowest layer is reached. Below layer 1 is the physical medium through which actual communication occurs. The virtual communication is shown by dotted lines and the physical communication by solid lines.
Devices that use a network architecture can be arranged such that one device acts as a server and the other device acts as a client. The prior art includes several client-server model network architectures. Two examples include the Jini® (Jini is a registered trademark of Sun Microsystems, Inc.) architecture and the Universal Plug and Play (UPnP) protocol. The device that includes the Jini® software announces itself to the network and becomes accessible to the other devices on the network to share its power and features. The Jini® software can be implemented only for devices that support the Java® (Java is a registered trademark of Sun Microsystems. Inc,) platform. Similarly, the UPnP protocol can be implemented only for devices that include an Extensible Markup Language (XML) (XML is claimed as a trademark or generic term by Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, and/or Keio University on behalf of the W3C. W3C® is World Wide Web Consortium (registered in numerous countries)) generator. This presents a problem because the hardware that is required to support the Java® platform or the XML generator is relatively expensive, bulky, and heavyweight. This adds to the total cost of the devices. An additional problem is presented to the impoverished devices because they do not have the resources to support such hardware.
Furthermore, to establish the client-server connection such as a Transmission Control Protocol (TCP) connection, it is often necessary for the messages to traverse one or more firewalls. This presents a problem for many client devices, especially impoverished client devices that lack the user input capabilities such as keyboards, monitors and loadable software to pull up configuration screens to properly configure the devices for communication through the firewalls.
In the prior art, an additional load is placed on the memory resources of the client devices to control the input output (I/O) pins of the client devices. An example of the I/O pins includes the I/O pins for an Integrated Circuit (IC) chip. Controlling the I/O pins includes switching the pins on and off. In the prior art, the I/O pins control program instructions are downloaded to the client. The program instructions are stored permanently in the client memory, and read and executed by the client processor. To reprogram the I/O pins, new program instructions are downloaded to the client. The old program instructions are erased from the client memory and replaced by the new program instructions. The prior art thus requires a permanent allocation of client memory space to store the I/O pins control program instructions. This can present a problem for the impoverished devices with small memory resources.